package hilos;

import objetos.Puente;

/**
 * Hilo encargado de realizar un cambio de sentido sobre el puente cada determinado valor de tiempo.
 * La función principal de este hilo es no crear limitación en la espera.
 * 
 * @author Carlos Verdejo - Saul Carranza
 *
 */
public class CambioSentido implements Runnable{
	
	Puente auxiliar; //Puente sobre el que se realiza el cambio de sentido
	int identificador; //Identificador del hilo
	
	/**
	 * Constructor parametrizado
	 * @param puente Puente sobre el que se realiza el cambio de sentido
	 * @param id Identificador del hilo que realiza el cambio de sentido
	 */
	public CambioSentido (Puente puente, int id){
		auxiliar = puente;
		identificador = id;
	}
	
	/**
	 * Ejecución del hilo
	 */
	public void run() {
		while(true){
			try {
				Thread.sleep(4000); //Realiza una pausa de 4 segundos
				
				//---ONLY TEST MODE---
				//System.out.println("Hilo sentido "+identificador+" intenta cambiar sentido");
				
				String aux = auxiliar.cambioSentido(); //Llama al metodo cambioSentido del puente y almacena la cadena que devuelve en aux
				System.out.println("\n\t" + aux + "\n"); //Imprime el valor de la cadena aux
				
				//---ONLY TEST MODE---
				//System.out.println("Hilo sentido "+identificador+" cambió sentido");
			} catch (InterruptedException e){
				System.out.print(auxiliar.getNombre() + e.getMessage());
			}
		}
		
	}

}
